Templates C++ এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা প্রোগ্রামিংয়ের সময় ডেটা টাইপ নির্দিষ্ট না করে ফাংশন বা ক্লাস তৈরি করতে দেয়। Templates ব্যবহার করে আমরা একবারে একটি ফাংশন বা ক্লাস তৈরি করে সেটিকে বিভিন্ন ডেটা টাইপের সাথে ব্যবহার করতে পারি, যা কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং টাইপ নিরপেক্ষ প্রোগ্রামিংকে সম্ভব করে তোলে।
C++ এ দুই ধরনের টেমপ্লেট রয়েছে:
- Function Templates
- Class Templates
Function Templates
Function Template হলো এমন একটি টেমপ্লেট, যা একাধিক ডেটা টাইপের সাথে কাজ করতে পারে। এটি ব্যবহার করে একবার ফাংশন তৈরি করলে সেটিকে বিভিন্ন ডেটা টাইপের সাথে ব্যবহার করা যায়। Function Template সাধারণত template কীওয়ার্ডের সাথে ব্যবহৃত হয় এবং ডেটা টাইপ typename বা class কীওয়ার্ডের মাধ্যমে নির্ধারণ করা হয়।
Function Template এর সাধারণ গঠন
template <typename T>
T functionName(T parameter1, T parameter2) {
// ফাংশন বডি
}এখানে T একটি টেমপ্লেট টাইপ প্যারামিটার, যা ফাংশন কল করার সময় নির্ধারণ করা হয়।
উদাহরণ: দুইটি ভ্যালুর মধ্যে বড়টি বের করার জন্য Function Template
#include <iostream>
template <typename T>
T getMax(T a, T b) {
return (a > b) ? a : b;
}
int main() {
std::cout << "Max of 10 and 20: " << getMax(10, 20) << std::endl; // int টাইপ
std::cout << "Max of 3.5 and 7.2: " << getMax(3.5, 7.2) << std::endl; // double টাইপ
std::cout << "Max of 'A' and 'Z': " << getMax('A', 'Z') << std::endl; // char টাইপ
return 0;
}আউটপুট:
Max of 10 and 20: 20
Max of 3.5 and 7.2: 7.2
Max of 'A' and 'Z': Zএখানে getMax একটি Function Template, যা int, double, এবং char টাইপের ভ্যালুর জন্য একইভাবে কাজ করেছে।
Class Templates
Class Template হলো এমন একটি টেমপ্লেট, যা বিভিন্ন ডেটা টাইপের অবজেক্ট তৈরি করতে পারে। Class Template ব্যবহার করে একবার ক্লাস তৈরি করলে সেটি বিভিন্ন ডেটা টাইপের জন্য ব্যবহার করা যায়, যা কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
Class Template এর সাধারণ গঠন
template <typename T>
class ClassName {
public:
T data;
ClassName(T value) : data(value) {}
void display() {
std::cout << "Value: " << data << std::endl;
}
};এখানে T একটি টেমপ্লেট টাইপ প্যারামিটার, যা ক্লাসের ডেটা টাইপ নির্দেশ করে।
উদাহরণ: একাধিক ডেটা টাইপের জন্য একটি Class Template
#include <iostream>
template <typename T>
class Storage {
T data;
public:
Storage(T value) : data(value) {}
T getData() const {
return data;
}
void setData(T value) {
data = value;
}
};
int main() {
Storage<int> intStorage(100); // int টাইপ
Storage<double> doubleStorage(3.14); // double টাইপ
std::cout << "Integer Storage: " << intStorage.getData() << std::endl;
std::cout << "Double Storage: " << doubleStorage.getData() << std::endl;
intStorage.setData(200);
std::cout << "Updated Integer Storage: " << intStorage.getData() << std::endl;
return 0;
}আউটপুট:
Integer Storage: 100
Double Storage: 3.14
Updated Integer Storage: 200এখানে Storage একটি Class Template, যা int এবং double টাইপের ডেটা সংরক্ষণ এবং প্রক্রিয়াকরণ করতে ব্যবহৃত হয়েছে।
Function Template এবং Class Template এর ব্যবহারিক সুবিধা
- পুনঃব্যবহারযোগ্যতা: একবার টেমপ্লেট তৈরি করলে সেটি বিভিন্ন ডেটা টাইপের জন্য ব্যবহার করা যায়, যা কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
- টাইপ সেফটি: টেমপ্লেট ব্যবহার করে টাইপ নির্ভর কোড তৈরি করা যায়, যা টাইপ সম্পর্কিত ত্রুটি কমাতে সাহায্য করে।
- সহজ এবং কার্যকর: একই কাজের জন্য বারবার ভিন্ন ভিন্ন ডেটা টাইপের জন্য ফাংশন বা ক্লাস লেখার প্রয়োজন হয় না, টেমপ্লেট ব্যবহার করে একবারে সব কাজ করা যায়।
একাধিক টেমপ্লেট প্যারামিটার
C++ এ একই সাথে একাধিক টেমপ্লেট প্যারামিটার ব্যবহার করা যায়, যা ক্লাস বা ফাংশনে একাধিক ধরনের ডেটা নিয়ে কাজ করতে সহায়ক।
উদাহরণ: একাধিক টেমপ্লেট প্যারামিটার সহ Class Template
#include <iostream>
template <typename T1, typename T2>
class Pair {
T1 first;
T2 second;
public:
Pair(T1 a, T2 b) : first(a), second(b) {}
void display() {
std::cout << "First: " << first << ", Second: " << second << std::endl;
}
};
int main() {
Pair<int, double> p1(10, 3.14);
Pair<std::string, int> p2("Age", 30);
p1.display();
p2.display();
return 0;
}আউটপুট:
First: 10, Second: 3.14
First: Age, Second: 30এখানে Pair ক্লাসে দুইটি টেমপ্লেট প্যারামিটার T1 এবং T2 ব্যবহার করা হয়েছে, যা বিভিন্ন ডেটা টাইপের জন্য ব্যবহার করা হয়েছে।
উপসংহার
- Function Template: একবারে একটি ফাংশন তৈরি করে সেটিকে বিভিন্ন ডেটা টাইপের সাথে ব্যবহার করা যায়।
- Class Template: একবারে একটি ক্লাস তৈরি করে সেটিকে বিভিন্ন ডেটা টাইপের অবজেক্ট তৈরি করতে ব্যবহার করা যায়।
- একাধিক টেমপ্লেট প্যারামিটার: একাধিক ডেটা টাইপের সাথে কাজ করার জন্য টেমপ্লেট প্যারামিটার ব্যবহার করা যায়।
C++ এ Templates ব্যবহার করে প্রোগ্রামাররা সাধারণ ফাংশন বা ক্লাস তৈরি করতে পারে, যা বিভিন্ন ডেটা টাইপের সাথে কাজ করতে পারে, এবং এটি কোডের পুনঃব্যবহারযোগ্যতা এবং গঠনকে আরও কার্যকর করে তোলে।
Read more